﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Serilog;

namespace orz.mouxianyu
{
    public class Program
    {
        public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
             .SetBasePath(Directory.GetCurrentDirectory())
             .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
             .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true)
             .AddEnvironmentVariables()
             .Build();

        public static int Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                .ReadFrom.Configuration(Configuration)
                .Enrich.FromLogContext()
                .WriteTo.RollingFile(AppDomain.CurrentDomain.BaseDirectory + @"\logs\orz.mouxianyu.log",//报错文件
                    fileSizeLimitBytes: 1_000_000,//文件大小
                    shared: true,
                    flushToDiskInterval: TimeSpan.FromSeconds(5))//报错等级（详情参见serilog官网或github）
                .CreateLogger();

            try
            {
                Log.Information("Getting the motors running...");

                CreateWebHostBuilder(args).Build().Run();

                return 0;
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "Host terminated unexpectedly");
                return 1;
            }
            finally
            {
                Log.CloseAndFlush();
            }
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseSerilog();
    }
    /*
        * 本框架为基于netcore2.2的web后端框架——咸鱼框架V1.0（2019年5月13日更新1.1）
        * 本框架仅限个人学习交流，个人及小规模团队非商业项目请随意，只要在应用中声明作者信息（附上GitHub地址https://github.com/stardustrunes/orz.mouxianyu）即可，商业用途请联系作者
        * 
        * 第一版暂时只有这些功能，以后还会更新（大概，发出咕咕咕的声音）
        * 下一版预定加入：1.本地日志(2019年5月13日已完成)与数据库日志（咕咕咕），2.hangfire，3.mq，4.websocket（2019年5月13日已完成，5.还没想好，写多少是多少吧
        * 
        * 使用过程中发现bug欢迎反馈至邮箱 stardustrunes@gmail.com
        * 欢迎关注本人b站空间，不定时发布相关教程（大概，发出咕咕咕的声音）
        * B站@某咸鱼orz [https://space.bilibili.com/8424446]
        * 
        * 2019年4月16日19:39:33
    */

}
